package lexico;

public class EstadoNoAceptacion implements Estado{
/*Atributos*/
	private Transicion[] transiciones;
	private String id;
	private String siguienteEstado;
	private boolean inicial;

/*Constructora*/
	public EstadoNoAceptacion(String id, Transicion... transiciones)
	{
		this.id=id;
		this.transiciones=transiciones;
		this.siguienteEstado="e0";
		this.inicial=false;
	}
	
/*Get & Set*/
	public boolean getEstadoInicial(){return inicial;}
	public String getId() {return id;}
	public String getSiguienteEstado() {return siguienteEstado;}
	public void setInicial(boolean inicial) {this.inicial=inicial;}

/*Metodos*/
	public Token getToken(String lexema) {return null;}
	
	public int transita(char siguiente, String lexema, AnalizadorLexico al) throws Exception{
		for (Transicion t: transiciones){
			String caracteres=t.getCaracteres();
			if (caracteres==null ||caracteres.indexOf(siguiente)>-1){
				siguienteEstado=t.getSiguienteEstado();
				return +1;				
			}
		}
		throw new Exception("Error lexico. Token no reconocido: " + lexema+siguiente+ " Linea: "+ al.getLinea() + " Columna: " + al.getColumna());
	}
}
